﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;

namespace TestPortalMainService
{
    [TestClass]
    public class UnitTest1
    {
        //ServiceUsuario.UsuarioClient proxy = new ServiceUsuario.UsuarioClient();
        //[TestMethod]
        //public void TestCrearUsuarios()
        //{
        //    ServiceUsuario.Usuario user_esperado = new ServiceUsuario.Usuario() { Email = "pre@dem.com", Nombre = "Nom", Apellido = "Apellido", Carrera = "Carrera", Ocupacion = "Ocupacion", Password = "Password" };
        //    ServiceUsuario.Usuario user_creado = proxy.crearUsuario("pre@dem.com", "Password", "Nom", "Apellido", "Ocupacion", "Carrera");

        //    Assert.AreEqual(user_esperado.Email, user_creado.Email);
        //    Assert.AreEqual(user_esperado.Nombre, user_creado.Nombre);
        //    Assert.AreEqual(user_esperado.Apellido, user_creado.Apellido);
        //    Assert.AreEqual(user_esperado.Carrera, user_creado.Carrera);
        //    Assert.AreEqual(user_esperado.Ocupacion, user_creado.Ocupacion);
        //    Assert.AreEqual(user_esperado.Password, user_creado.Password);
        //}

        //[TestMethod]
        //public void TestObtenerUsuario()
        //{
        //    ServiceUsuario.Usuario user_creado = proxy.obtenerUsuario("edson@hotmail.com");

        //    Assert.IsNotNull(user_creado);
        //}

        [TestMethod]
        public void TestObtenerUsuarioRest() 
        { 
            //PRueba de Usuarios REst
            //Establecer la data que será recibida
            //string postdata = "{\"Codigo\":1,\"Nombre\":\"Juan\"}";
            //
            //byte[] data = Encoding.UTF8.GetBytes(postdata);
            //Crear El request que para el Get
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:50358/Usuario.svc/Usuarios");
            //establecer el metodo
            req.Method = "GET";
            //Recuperar la respuesta
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            //Instanciar un lector
            StreamReader reader = new StreamReader(res.GetResponseStream());
            //Leer la cadena respondida
            string usuariosJSon = reader.ReadToEnd();
            //Crear el Serializador que convertira la cadena Json a Objeto
            JavaScriptSerializer js2 = new JavaScriptSerializer();
            //Recibir la lista
            Object Lista = js2.Deserialize(usuariosJSon,typeof(List<Usuario>));
            //Verificar
            Assert.IsNotNull(Lista);
        }

        [TestMethod]
        public void TestObtenerUsuarioRest1()
        {
            //PRueba de Usuarios REst
            //Establecer la data que será recibida
            //string postdata = "{\"Codigo\":1,\"Nombre\":\"Juan\"}";
            //
            //byte[] data = Encoding.UTF8.GetBytes(postdata);
            //Crear El request que para el Get
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:50358/Usuario.svc/Usuarios/Eliminacion/edanmegu@gmail$punto$com");
            //establecer el metodo
            req.Method = "GET";
            //Recuperar la respuesta
            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            //Instanciar un lector
            StreamReader reader = new StreamReader(res.GetResponseStream());
            //Leer la cadena respondida
            string usuariosJSon = reader.ReadToEnd();
            //Crear el Serializador que convertira la cadena Json a Objeto
            JavaScriptSerializer js2 = new JavaScriptSerializer();
            //Recibir la lista
            Object Lista = js2.Deserialize(usuariosJSon, typeof(List<Usuario>));
            //Verificar
            Assert.IsNotNull(Lista);
        }
    }
}
